QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#851000#9310. Permutation Counting 4ciuimWA 25ms8132kbC++142.3kb2025-01-10 14:15:262025-01-10 14:15:26

Judging History

你现在查看的是最新测评结果

  • [2025-01-10 14:15:26]
  • 评测
  • 测评结果:WA
  • 用时:25ms
  • 内存:8132kb
  • [2025-01-10 14:15:26]
  • 提交

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'