QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#851000 | #9310. Permutation Counting 4 | ciuim | WA | 25ms | 8132kb | C++14 | 2.3kb | 2025-01-10 14:15:26 | 2025-01-10 14:15:26 |
Judging History
answer
bool M1;
#define look_memory cerr<<abs(&M2-&M1)/1024.0/1024<<" MB\n"
#define look_time cerr<<(clock()-Time)*1.0/CLOCKS_PER_SEC<<'\n'
#include <cstdio>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <cstring>
#include <array>
#include <algorithm>
#include <queue>
#include <vector>
#include <bitset>
#include <ctime>
#include <cstdlib>
#include <random>
#include <set>
#include <ctime>
#include <map>
#include <stack>
#include <unordered_map>
#include <assert.h>
#include <unordered_set>
#define i128 __int128
#define ll long long
#define uint unsigned
#define ull unsigned long long
#define ld long double
#define fo(a,b,c) for(ll a=b;a<=c;++a)
#define re(a,b,c) for(ll a=b;a>=c;--a)
#define pii pair<ll,ll>
#define pdd pair<db,db>
#define fi first
#define pb push_back
#define se second
#define ite set<array<ll,3>> ::iterator
#define vite vector<ll> ::iterator
#define mite map<ll,ll> ::iterator
using namespace std;
const ll mod=998244353;
inline ll gi()
{
ll x = 0, f = 1;
char ch = getchar();
while(ch < '0' || ch > '9')
{
if (ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9')
{
x = (x<<1) + (x<<3) + (ch^48);
ch = getchar();
}
return x * f;
}
ll _=1;
const ll inf=2e17+5,iinf=1e9+5;
const ll N=1000005;
ll d[N],l[N],r[N];
ll jj(ll id1,ll id2)
{
ll zl=max(l[id1],l[id2]),zr=min(r[id1],r[id2]);
ll ans=max(0ll,zr-zl+1);
return ans%2;
}
void sol()
{
ll os=0;
ll n=gi();
fo(i,1,n) d[i]=0;
fo(i,1,n)
{
l[i]=gi(),r[i]=gi();
if((r[i]-l[i]+1)%2==0) os++;
}
if(os>=3)
{
cout<<0;
return;
}
if(os==2)
{
ll fid=0,sid=0;
fo(i,1,n)
{
if((r[i]-l[i]+1)%2==0)
{
if(fid==0) fid=i;
else sid=i;
}
}
cout<<jj(fid,sid);
return;
}
if(os==1)
{
ll id=0;
fo(i,1,n)
{
if((r[i]-l[i]+1)%2==0) id=i;
else d[l[i]]++,d[r[i]+1]--;
}
ll ans=0;
fo(i,1,n)
{
d[i]+=d[i-1];
if(i>=l[id]&&i<=r[id])
{
ans+=d[i];
}
}
ans%=2;
cout<<ans;
return;
}
fo(i,1,n)
{
d[l[i]]++,d[r[i]+1]--;
}
ll ans=0;
fo(i,1,n)
{
d[i]+=d[i-1];
ll num=d[i];
ans+=num*(num-1)/2;
ans%=2;
}
cout<<ans;
}
bool M2;
int main()
{
int Time=clock();
look_memory;
_=gi();
while(_--)
{
sol();
printf("\n");
}
look_time;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 8004kb
input:
4 5 1 2 1 5 1 2 1 2 2 2 5 1 1 2 4 2 3 5 5 3 4 5 3 5 1 2 3 4 3 5 3 3 5 1 5 1 4 4 5 5 5 1 2
output:
0 1 0 0
result:
ok 4 tokens
Test #2:
score: -100
Wrong Answer
time: 25ms
memory: 8132kb
input:
66725 14 7 7 4 6 7 8 8 13 2 13 6 13 6 10 14 14 1 10 9 11 7 9 3 8 4 12 5 12 12 2 6 3 6 7 11 2 5 1 1 6 12 8 12 2 3 7 9 7 8 1 10 1 4 10 4 8 4 4 6 10 9 10 2 3 2 7 1 3 3 4 2 2 3 10 20 3 12 10 14 19 20 19 20 1 9 7 9 13 16 17 17 16 18 2 11 5 19 6 17 11 17 3 6 3 11 7 20 8 17 3 18 10 15 9 20 16 5 10 2 10 2 1...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 1st words differ - expected: '1', found: '0'