Submission #68605496


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=(a);i<(n);i++)
#define per(i,a,n) for (int i=(n)-1;i>=(a);i--)
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef basic_string<int> BI;
typedef long long ll;
typedef pair<int,int> PII;
typedef double db;
mt19937 mrand(random_device{}()); 
const ll mod=1000000007;
int rnd(int x) { return mrand() % x;}
ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}
ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
// head

const int N=301000;
int n,q,f[N],sz[N],p[N];
int find(int x) {
	return f[x]==x?x:f[x]=find(f[x]);
}
int main() {
	scanf("%d",&n);
	rep(i,1,n+1) f[i]=i;
	rep(i,1,n+1) {
		scanf("%d",&p[i]);
		f[find(i)]=find(p[i]);
	}
	rep(i,1,n+1) sz[find(i)]+=1;
	int m0=0,m1=0,od=0,o1=0;
	rep(i,1,n+1) if (find(i)==i) {
		int pc=sz[i];
		//printf("!! %d\n",pc);
		if (pc%2==0) m0+=pc/2,m1+=pc/2;
		else {
			od+=1;
			if (pc==1) o1+=1;
			m0+=pc/2; m1+=max(0,pc/2-1);
		}
	}
	scanf("%d",&q);
	rep(i,0,q) {
		int a0,a1,a2;
		scanf("%d%d%d",&a0,&a1,&a2);
		if (a0<=m0) {
			int ans=2*a0;
			int M1=min(m1,a0);
			if (a1<=M1) printf("%d\n",ans+2*min(a0,a1));
			else printf("%d\n",ans+2*M1+min(a1-M1,a0-M1));
		} else {
			int ans=2*m0+min(a0-m0,od);
			//printf("?? %d\n",ans);
			int M1=m1+min(a0-m0,od-o1);
			//printf("!! %d\n",M1);
			printf("%d\n",ans+2*min(a1,M1));
		}
	}
}

Submission Info

Submission Time
Task C - Maximize Sum of Mex
User apiad
Language C++ 20 (gcc 12.2)
Score 0
Code Size 1621 Byte
Status WA
Exec Time 123 ms
Memory 7476 KiB

Compile Error

Main.cpp: In function ‘int main()’:
Main.cpp:30:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   30 |         scanf("%d",&n);
      |         ~~~~~^~~~~~~~~
Main.cpp:33:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   33 |                 scanf("%d",&p[i]);
      |                 ~~~~~^~~~~~~~~~~~
Main.cpp:48:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   48 |         scanf("%d",&q);
      |         ~~~~~^~~~~~~~~
Main.cpp:51:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   51 |                 scanf("%d%d%d",&a0,&a1,&a2);
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 900
Status
AC × 3
AC × 10
WA × 41
Set Name Test Cases
Sample 01-sample-01.txt, 01-sample-02.txt, 01-sample-03.txt
All 01-sample-01.txt, 01-sample-02.txt, 01-sample-03.txt, 02-small-01.txt, 02-small-02.txt, 02-small-03.txt, 02-small-04.txt, 02-small-05.txt, 02-small-06.txt, 02-small-07.txt, 02-small-08.txt, 02-small-09.txt, 02-small-10.txt, 03-random-01.txt, 03-random-02.txt, 03-random-03.txt, 03-random-04.txt, 03-random-05.txt, 03-random-06.txt, 03-random-07.txt, 03-random-08.txt, 03-random-09.txt, 03-random-10.txt, 04-divide-01.txt, 04-divide-02.txt, 04-divide-03.txt, 04-divide-04.txt, 04-divide-05.txt, 04-divide-06.txt, 04-divide-07.txt, 04-divide-08.txt, 04-divide-09.txt, 04-divide-10.txt, 05-even-divide-01.txt, 05-even-divide-02.txt, 05-even-divide-03.txt, 05-even-divide-04.txt, 05-even-divide-05.txt, 05-even-divide-06.txt, 05-even-divide-07.txt, 05-even-divide-08.txt, 05-even-divide-09.txt, 05-even-divide-10.txt, 06-even-triangular-divide-01.txt, 06-even-triangular-divide-02.txt, 07-large-cycle-01.txt, 07-large-cycle-02.txt, 08-odd-triangular-divide-01.txt, 08-odd-triangular-divide-02.txt, 09-triangular-divide-01.txt, 09-triangular-divide-02.txt
Case Name Status Exec Time Memory
01-sample-01.txt AC 1 ms 3712 KiB
01-sample-02.txt AC 1 ms 3708 KiB
01-sample-03.txt AC 1 ms 3784 KiB
02-small-01.txt AC 1 ms 3844 KiB
02-small-02.txt AC 1 ms 3608 KiB
02-small-03.txt AC 1 ms 3936 KiB
02-small-04.txt AC 1 ms 3968 KiB
02-small-05.txt WA 1 ms 3880 KiB
02-small-06.txt WA 1 ms 3896 KiB
02-small-07.txt AC 1 ms 3928 KiB
02-small-08.txt WA 1 ms 3848 KiB
02-small-09.txt WA 1 ms 3844 KiB
02-small-10.txt WA 1 ms 3856 KiB
03-random-01.txt WA 111 ms 6016 KiB
03-random-02.txt WA 111 ms 5992 KiB
03-random-03.txt WA 113 ms 6332 KiB
03-random-04.txt WA 112 ms 5952 KiB
03-random-05.txt WA 112 ms 6172 KiB
03-random-06.txt WA 123 ms 6060 KiB
03-random-07.txt AC 120 ms 6068 KiB
03-random-08.txt WA 119 ms 6024 KiB
03-random-09.txt WA 120 ms 6052 KiB
03-random-10.txt AC 118 ms 6116 KiB
04-divide-01.txt WA 114 ms 7144 KiB
04-divide-02.txt WA 113 ms 6912 KiB
04-divide-03.txt WA 114 ms 7184 KiB
04-divide-04.txt WA 113 ms 7112 KiB
04-divide-05.txt WA 114 ms 7160 KiB
04-divide-06.txt WA 115 ms 7152 KiB
04-divide-07.txt WA 113 ms 7264 KiB
04-divide-08.txt WA 113 ms 7084 KiB
04-divide-09.txt WA 113 ms 6912 KiB
04-divide-10.txt WA 114 ms 7176 KiB
05-even-divide-01.txt WA 111 ms 7476 KiB
05-even-divide-02.txt WA 112 ms 7388 KiB
05-even-divide-03.txt WA 113 ms 7380 KiB
05-even-divide-04.txt WA 114 ms 7360 KiB
05-even-divide-05.txt WA 111 ms 7344 KiB
05-even-divide-06.txt WA 111 ms 7176 KiB
05-even-divide-07.txt WA 112 ms 7252 KiB
05-even-divide-08.txt WA 113 ms 7304 KiB
05-even-divide-09.txt WA 113 ms 7200 KiB
05-even-divide-10.txt WA 113 ms 7256 KiB
06-even-triangular-divide-01.txt WA 121 ms 6328 KiB
06-even-triangular-divide-02.txt WA 112 ms 6052 KiB
07-large-cycle-01.txt WA 113 ms 6228 KiB
07-large-cycle-02.txt WA 112 ms 6016 KiB
08-odd-triangular-divide-01.txt WA 117 ms 6120 KiB
08-odd-triangular-divide-02.txt WA 114 ms 6144 KiB
09-triangular-divide-01.txt WA 114 ms 6340 KiB
09-triangular-divide-02.txt WA 112 ms 6344 KiB