QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#527071#8353. T1ffffyc100 ✓1603ms3808kbC++142.1kb2024-08-22 09:35:242024-08-22 09:35:29

Judging History

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

  • [2024-08-22 09:35:29]
  • 评测
  • 测评结果:100
  • 用时:1603ms
  • 内存:3808kb
  • [2024-08-22 09:35:24]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long
namespace IO{//by cyffff
	int len=0;
	char ibuf[(1<<21)+1],*iS,*iT,out[(1<<25)+1];
	#if ONLINE_JUDGE
	#define gh() (iS==iT?iT=(iS=ibuf)+fread(ibuf,1,(1<<21)+1,stdin),(iS==iT?EOF:*iS++):*iS++)
 	#else
	#define gh() getchar()
	#endif
	#define reg register
	inline int read(){
		reg char ch=gh();
		reg int x=0;
		reg char t=0;
		while(ch<'0'||ch>'9')   t|=ch=='-',ch=gh();
		while(ch>='0'&&ch<='9') x=x*10+(ch^48),ch=gh();
		return t?-x:x;
	}
	inline void putc(char ch){
		out[len++]=ch;
	}
	template<class T>
	inline void write(T x){
		if(x<0)putc('-'),x=-x;
		if(x>9)write(x/10);
		out[len++]=x%10+48;
	}
	inline void flush(){
		fwrite(out,1,len,stdout);
		len=0;
	}
	inline char getc(){
		char ch=gh();
		while(ch<'A'||ch>'Z') ch=gh();
		return ch;
	}
}
using IO::read;
using IO::write;
using IO::flush;
using IO::getc;
using IO::putc;
#define pii pair<int,int>
#define mpr make_pair
#define fir first
#define sec second
const int N=20+2,S=1<<20;
int n,m,a[N][N],dp[N][N],lt[N][N],tp[N][N];
ll ans;
int main(){
	n=read(),m=read();
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			a[i][j]=read();
	int un=1<<n,um=1<<m;
	for(int i=0;i<m;i++)
		for(int j=i+1;j<m;j++){
			int s=0;
			for(int k=0;k<n;k++)
				if(a[k][i]<a[k][j])
					s|=1<<k;
			lt[i][j]=s;
		}
	for(int s=1;s<un;s++){
		vector<int>p,q;
		for(int i=0;i<n;i++)
			if(s>>i&1)
				p.push_back(i);
		q.push_back(0);
		for(int i=0;i<m;i++){
			bool fc=1,fd=1;
			for(int j=1;j<p.size();j++)
				fc&=a[p[j-1]][i]<a[p[j]][i],
				fd&=a[p[j-1]][i]>a[p[j]][i];
			if(fc||fd) q.push_back(i);
		}
		int t=q.size()-1;
		for(int i=0;i<=t;i++)
			for(int j=0;j<=t;j++)
				dp[i][j]=0;
		for(int i=1;i<=t;i++)
			for(int j=i+1;j<=t;j++)
				tp[i][j]=lt[q[i]][q[j]]&s;
		dp[0][0]=1;
		for(int i=1;i<=t;i++)
			for(int j=0;j<i;j++)
				for(int k=0;!k||k<j;k++)
					if(!k||tp[k][j]==tp[j][i]) dp[i][j]+=dp[j][k]; 
		for(int i=1;i<=t;i++)
			for(int j=0;j<i;j++)
				ans+=dp[i][j];
	}
	write(ans);
	flush();
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 20
Accepted

Test #1:

score: 20
Accepted
time: 1ms
memory: 3604kb

input:

10 10
10 9 8 7 6 5 4 3 2 1
16 19 18 17 20 15 14 13 60 11
30 52 28 27 26 25 24 23 22 21
40 39 38 37 36 35 34 33 32 31
50 49 48 47 46 45 44 43 42 41
12 59 58 57 56 55 70 53 29 51
54 69 68 67 66 65 64 63 62 61
80 79 78 77 76 75 74 92 72 71
90 89 88 87 86 85 84 83 82 81
100 99 98 97 96 95 94 93 73 91

output:

161565

result:

ok single line: '161565'

Test #2:

score: 20
Accepted
time: 1ms
memory: 3584kb

input:

10 10
77 62 56 97 96 29 48 93 92 91
90 89 63 87 86 85 39 22 5 81
80 79 78 100 76 75 27 73 72 1
70 69 68 31 66 65 64 52 99 61
60 59 58 57 98 55 54 36 53 2
50 49 94 47 46 45 44 43 8 41
40 84 38 37 28 35 34 33 14 67
30 95 82 74 26 25 24 23 83 21
20 19 18 17 16 15 32 13 12 11
10 9 42 7 6 88 4 3 51 71

output:

15613

result:

ok single line: '15613'

Test #3:

score: 20
Accepted
time: 1ms
memory: 3588kb

input:

10 10
58 96 17 38 12 60 26 7 100 88
14 23 11 67 49 15 87 59 46 81
95 33 24 27 64 78 50 29 43 5
56 34 91 42 66 31 3 35 6 4
16 9 48 22 73 47 72 8 93 80
10 77 79 39 20 28 19 40 57 69
83 76 30 85 71 45 82 13 61 55
92 94 25 54 52 21 44 68 99 1
74 97 51 37 41 65 18 36 75 84
63 53 70 32 86 90 89 2 98 62

output:

5879

result:

ok single line: '5879'

Test #4:

score: 20
Accepted
time: 1ms
memory: 3616kb

input:

10 10
100 2 50 49 48 47 76 9 8 7
67 66 65 64 63 62 61 60 59 58
57 79 78 77 46 45 44 43 42 41
40 39 38 5 6 68 69 70 71 72
73 86 85 84 83 82 81 80 56 55
54 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34
35 36 37 4 3 51 52 53 15 14
13 12 96 95 94 93 92 91 90 89
88 87 74 75 10 11 97 98 99 1

output:

19034

result:

ok single line: '19034'

Test #5:

score: 20
Accepted
time: 1ms
memory: 3476kb

input:

10 10
14 15 62 63 64 65 51 50 49 48
47 46 71 60 61 16 55 54 53 52
66 67 68 72 45 44 43 42 41 40
39 38 37 36 35 34 33 32 31 30
29 28 27 26 25 24 23 22 21 20
19 18 17 56 57 58 59 70 69 73
82 81 80 79 78 98 99 100 13 96
95 94 93 92 91 90 89 88 87 86
85 84 83 74 75 76 77 97 12 11
10 9 8 7 6 5 4 3 2 1

output:

24015

result:

ok single line: '24015'

Test #6:

score: 20
Accepted
time: 1ms
memory: 3600kb

input:

9 10
9 58 56 40 8 75 3 59 87 35
51 54 23 72 68 70 13 83 84 2
63 62 52 28 50 39 42 90 43 5
41 17 78 64 47 7 32 65 69 89
45 27 71 57 79 33 74 46 48 6
80 16 36 10 29 21 14 67 18 26
60 86 4 22 61 82 38 88 11 37
1 49 19 77 20 31 44 66 55 53
73 30 24 34 81 76 12 85 15 25

output:

4520

result:

ok single line: '4520'

Test #7:

score: 20
Accepted
time: 1ms
memory: 3484kb

input:

10 2
3 16
5 11
18 20
15 17
8 2
9 6
13 7
12 4
1 10
14 19

output:

325

result:

ok single line: '325'

Subtask #2:

score: 25
Accepted

Test #8:

score: 25
Accepted
time: 10ms
memory: 3612kb

input:

15 15
146 31 130 80 142 124 140 105 54 5 197 144 202 170 107
108 6 69 168 34 59 73 151 132 3 104 172 115 147 199
63 85 217 42 156 30 157 171 200 145 19 143 162 4 210
191 133 222 39 40 166 213 220 211 13 180 8 192 22 89
174 62 10 121 196 74 186 1 38 149 218 46 12 87 126
25 165 188 75 184 123 78 148 1...

output:

35335

result:

ok single line: '35335'

Test #9:

score: 25
Accepted
time: 10ms
memory: 3608kb

input:

15 15
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
111 112 113 114 115 116 117 110 109 108 74 75 76 77 195
132 131 130 129 128 127 126 125 124 123 122 121 120 119 118
147 146 145 144 143 142 141 140 139 138 137 136 135 134 13...

output:

4004997

result:

ok single line: '4004997'

Test #10:

score: 25
Accepted
time: 7ms
memory: 3632kb

input:

15 15
225 224 223 222 221 220 219 218 217 216 215 214 213 212 211
210 209 208 207 206 40 39 29 28 27 26 25 24 23 22
21 20 19 18 17 16 15 14 13 12 11 10 9 8 7
6 5 4 3 71 72 73 74 75 76 77 78 79 80 81
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111...

output:

2149077

result:

ok single line: '2149077'

Test #11:

score: 25
Accepted
time: 0ms
memory: 3568kb

input:

3 15
34 9 22 13 41 26 19 39 23 16 24 29 45 42 10
4 6 18 1 33 28 12 7 8 14 30 44 40 15 25
17 2 38 43 21 3 5 27 32 11 37 35 31 20 36

output:

2247

result:

ok single line: '2247'

Test #12:

score: 25
Accepted
time: 9ms
memory: 3544kb

input:

15 12
164 41 93 162 136 126 32 85 133 65 122 150
91 26 3 124 147 154 128 43 54 58 12 130
169 9 83 134 151 10 27 98 76 111 4 153
81 1 53 46 36 167 14 21 66 103 100 87
25 146 120 2 141 95 57 37 118 138 42 96
60 94 34 145 69 73 33 156 72 6 173 170
142 109 62 148 144 178 68 108 102 40 166 92
157 48 163 ...

output:

21159

result:

ok single line: '21159'

Test #13:

score: 25
Accepted
time: 27ms
memory: 3608kb

input:

15 15
225 224 223 222 221 99 219 165 217 216 215 214 213 212 211
210 209 208 207 206 205 204 203 202 201 200 199 198 197 196
195 194 193 192 191 190 189 188 187 186 185 184 183 182 181
180 179 178 177 176 175 174 173 172 171 170 169 168 167 166
218 164 163 162 161 160 159 158 157 156 155 154 153 152...

output:

161544769

result:

ok single line: '161544769'

Test #14:

score: 25
Accepted
time: 17ms
memory: 3608kb

input:

15 15
1 2 3 4 5 6 7 8 9 10 206 105 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 214 38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54 55 145 65 58 59 60
61 62 63 64 76 66 67 152 69 70 71 72 73 74 75
148 77 78 79 80 81 82 83 84 85 142 87 88 89 90
91 92 93 94 95 96 97 175 9...

output:

4363021

result:

ok single line: '4363021'

Subtask #3:

score: 25
Accepted

Test #15:

score: 25
Accepted
time: 283ms
memory: 3604kb

input:

18 18
324 323 322 321 320 319 318 152 316 315 314 313 312 311 310 309 308 307
306 305 304 303 302 301 300 299 298 297 296 295 294 293 292 291 290 289
288 287 286 285 284 283 282 281 280 279 278 277 276 275 274 273 272 271
270 269 268 267 266 265 264 263 262 261 138 259 258 58 256 255 254 253
252 251...

output:

4612987094

result:

ok single line: '4612987094'

Test #16:

score: 25
Accepted
time: 183ms
memory: 3612kb

input:

18 18
1 2 85 4 5 6 7 8 9 31 11 12 13 14 15 16 17 18
19 49 21 22 23 24 25 26 27 28 29 30 283 32 33 243 35 36
37 38 39 40 90 42 43 44 45 46 47 48 20 50 51 52 53 54
55 137 57 58 59 60 61 105 191 64 125 320 67 68 69 196 71 72
73 74 75 76 77 78 79 80 178 315 83 84 3 86 87 88 89 41
91 92 140 94 66 96 97 9...

output:

81717007

result:

ok single line: '81717007'

Test #17:

score: 25
Accepted
time: 96ms
memory: 3592kb

input:

18 18
324 321 42 106 146 83 8 104 261 223 49 47 320 204 238 201 19 43
183 284 167 307 314 244 27 4 139 323 265 319 124 263 172 322 154 210
195 13 23 249 90 301 266 107 306 159 12 100 217 78 20 60 278 80
56 245 308 202 253 163 171 133 5 97 170 280 156 52 230 155 16 68
158 302 77 115 234 276 231 281 7...

output:

88491

result:

ok single line: '88491'

Test #18:

score: 25
Accepted
time: 95ms
memory: 3504kb

input:

18 18
1 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142
141 140 139 138 137 136 135 134 133 132 131 130 129 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 23 22 21 20 19 18
17 16 15 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308
309 310 311 312 313 202 203 204 20...

output:

8064835

result:

ok single line: '8064835'

Test #19:

score: 25
Accepted
time: 95ms
memory: 3616kb

input:

18 18
1 2 3 4 5 6 7 8 9 69 68 67 66 65 64 63 62 61
60 59 58 178 304 256 255 254 253 252 251 250 249 248 247 246 245 244
243 242 241 240 239 238 237 236 235 234 233 232 231 230 229 228 227 226
225 224 223 222 221 220 117 118 119 120 121 122 123 124 125 126 153 152
151 150 149 148 147 209 208 207 206 ...

output:

18417513

result:

ok single line: '18417513'

Test #20:

score: 25
Accepted
time: 0ms
memory: 3604kb

input:

1 18
9 16 1 17 5 7 6 3 13 8 2 18 10 14 4 15 12 11

output:

702

result:

ok single line: '702'

Test #21:

score: 25
Accepted
time: 61ms
memory: 3520kb

input:

18 7
30 19 33 119 66 104 117
65 114 48 8 110 25 62
7 126 71 78 64 1 35
28 55 36 29 47 54 15
44 53 42 2 52 59 11
22 3 121 18 92 102 10
105 14 120 57 31 113 51
96 124 90 118 112 109 67
106 23 41 98 82 27 56
84 49 17 13 69 60 68
16 76 99 125 97 61 86
83 5 123 4 108 93 63
103 115 40 88 79 94 6
116 46 10...

output:

12152

result:

ok single line: '12152'

Subtask #4:

score: 30
Accepted

Test #22:

score: 30
Accepted
time: 1603ms
memory: 3544kb

input:

20 20
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400
361 362 363 364 365 366 367 222 369 370 371 372 373 374 375 376 377 378 379 380
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360
321 322 323 324 325 326 327 328 329 330 331 332 333 33...

output:

91904600752

result:

ok single line: '91904600752'

Test #23:

score: 30
Accepted
time: 827ms
memory: 3808kb

input:

20 20
400 399 398 397 396 395 394 393 392 391 390 389 388 387 386 385 384 383 382 381
380 379 378 377 376 375 374 373 372 371 333 369 368 367 366 365 237 363 362 361
360 359 358 357 356 355 354 86 81 351 350 103 348 347 346 345 344 343 342 341
340 339 148 337 336 335 334 370 332 331 330 329 328 327 ...

output:

1043464498

result:

ok single line: '1043464498'

Test #24:

score: 30
Accepted
time: 435ms
memory: 3592kb

input:

20 20
324 220 373 380 208 195 336 391 50 67 199 215 218 253 82 131 318 105 159 99
361 360 342 252 308 331 74 254 97 130 224 149 40 150 166 197 400 181 41 281
139 148 28 76 163 214 355 124 251 399 297 307 45 73 272 160 206 31 198 120
85 258 397 264 396 317 168 46 5 9 79 145 152 368 347 115 247 282 14...

output:

157233

result:

ok single line: '157233'

Test #25:

score: 30
Accepted
time: 432ms
memory: 3768kb

input:

20 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 327
326 325 324 323 322 321 320 319 318 317 316 315 314 313 312 311 310 309 308 307
306 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303
30...

output:

191254433

result:

ok single line: '191254433'

Test #26:

score: 30
Accepted
time: 437ms
memory: 3600kb

input:

20 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 282 283 284 285 398 397 396 395 394 393 392 391 390 389 388 387 36 35 34
33 32 369 370 371 372 373 374 375 376 377 378 379 380 381 29 28 27 26 25
24 23 22 281 280 279 278 277 276 275 274 273 272 271 270 269 268 267 266 265
264 263 262 261 2...

output:

323742533

result:

ok single line: '323742533'

Test #27:

score: 30
Accepted
time: 7ms
memory: 3608kb

input:

14 20
185 203 71 234 269 120 197 240 49 172 168 228 26 139 180 97 87 9 3 163
276 183 123 140 14 24 74 195 18 152 181 15 116 192 42 114 134 191 142 80
81 243 270 48 221 265 246 201 155 85 271 266 57 151 41 108 25 279 136 55
7 175 40 157 148 230 90 272 118 20 253 56 207 190 35 13 178 38 95 225
51 44 2...

output:

64694

result:

ok single line: '64694'

Test #28:

score: 30
Accepted
time: 190ms
memory: 3804kb

input:

20 2
6 23
10 30
37 4
39 20
33 1
32 3
16 17
22 24
11 18
21 26
8 7
25 31
9 15
34 27
38 29
40 5
36 19
12 28
13 2
14 35

output:

3614

result:

ok single line: '3614'